#ifndef GRAPHICSOBJECT_H
#define GRAPHICSOBJECT_H

/* 
 GraphicsObject.h
 
 This class creates an object to manage graphical objects
 The actual graphical object has not been implemented yet.
 */


#include "BaseEntity.h"
#include "CustomDataTypes.h"
#include "HelperFunctions.h"
#include <iostream>

using std::cout;

class GraphicsObject: public BaseEntity
{
    
private:
    
    //Store position of the game object
    Position3D mObjectPos;
    
    //Store type of object
    ObjectType mObjType;
    
    
public:
    
    //Constructors
    GraphicsObject(int id);
    GraphicsObject(int id, double xPos, double yPos, double zPos);
    GraphicsObject(int id, ObjectType objType, double xPos, double yPos, double zPos);
    
    //Update function
    void Update();
    
    //Setters for object position
    void       setObjectPosition(double xPos, double yPos, double zPos);
    void       setObjectPosition(Position3D position);
    
    //Getters for object position
    Position3D getObjectPosition();
    double     getObjectPositionX();
    double     getObjectPositionY();
    double     getObjectPositionZ();
    
    //Setter for object type
    void setObjectType(ObjectType objType);
    
    //Getter for object type
    ObjectType getObjectType();
    
    //Draw function
    //===========================================================
    //THIS FUNCTION IS TEMPORARY AND FOR TESTING ONLY
    //The render function will be the one doing the real drawing. 
    //===========================================================
    static void drawObject(ObjectType objType);
};

#endif